const path = require('path');
const fs = require('fs');
const resolve = filepath => path.join(__dirname, filepath);

// TODO 非对称加密算法需要两个密钥：公开密钥(publickey)和私有密钥(privatekey)
// 公钥与私钥是一对，如果用公钥对数据进行加密，只有用对应的私钥才能解密,如果私钥加密，只能公钥解密
// 因为加密和解密使用的是两个不同的密钥，所以这种算法叫作非对称加密算法

//生成私钥↓
//openssl genrsa -out rsa_private.key 1024
//根据私钥文件生成公钥文件↓
//openssl rsa -in rsa_private.key -pubout -out rsa_public.key
//in 由哪个文件作为源
//out 指定生成的公钥输出为？

const crypto = require('crypto');
const public = fs.readFileSync(resolve('rsa_public.key'));
const private = fs.readFileSync(resolve('rsa_private.key'));
const x = crypto.publicEncrypt(public,Buffer.from('你好,shiki!fwakfh1 ih  1298731jlnc')); //必须是个buffer

console.log(x.toString()); //乱七八糟的加密后的样子

console.log(crypto.privateDecrypt/*如果用公钥加密(publicEncrypt)就用privateDecrypt解密，反之如果用crypto.privateEncrypt，就用crypto.publicDecrypt*/(private, x).toString()); //你好,shiki!
